#ifndef __myTwoOpt_h__
#define __myTwoOpt_h__

#include <utility>
#include "edaMove.h"
#include "myDefine.h"
#include "graph.h"

using namespace std;

class myTwoOpt : public pair<unsigned int, unsigned int>, public edaMove
{
 public:
  myTwoOpt();
  myTwoOpt(const myTwoOpt &move);
  myTwoOpt(const Graph &g);

  ~myTwoOpt();

  edaMove* clone() const;
  void init(const edaSolution &sol);
  double incrEval(const edaSolution &sol);
  void update( edaSolution &sol ) const;
  void Serialize( edaBuffer &buf, bool pack );
  edaMove& operator = (const edaMove &_move);
  bool operator == (const edaMove &_move) const;

  setClassID(_USERCLASSID_ + _CLSID_TWO_OPT_);

 private:
  Graph *graph;
};

#endif
